package com.example.airole.llm.service;

import com.example.airole.llm.entity.ChatRequest;
import com.example.airole.llm.entity.ChatResponse;
import com.example.airole.common.entity.Role;
import java.util.List;

/**
 * LLM服务接口
 */
public interface LLMService {
    
    /**
     * 发送聊天消息
     * @param request 聊天请求
     * @return 聊天响应
     */
    ChatResponse chat(ChatRequest request);
    
    /**
     * 流式聊天（简化版，返回列表）
     * @param request 聊天请求
     * @return 响应列表
     */
    List<ChatResponse> chatStream(ChatRequest request);
    
    /**
     * 异步聊天
     * @param request 聊天请求
     * @return 任务ID
     */
    String chatAsync(ChatRequest request);
    
    /**
     * 获取异步聊天结果
     * @param taskId 任务ID
     * @return 聊天响应
     */
    ChatResponse getAsyncResult(String taskId);
    
    /**
     * 检查服务是否可用
     * @return 是否可用
     */
    boolean isServiceAvailable();
    
    /**
     * 获取支持的模型列表
     * @return 模型列表
     */
    String[] getSupportedModels();
    
    /**
     * 创建角色
     * @param role 角色信息
     * @return 创建的角色
     */
    Role createRole(Role role);
    
    /**
     * 获取角色信息
     * @param roleId 角色ID
     * @return 角色信息
     */
    Role getRole(String roleId);
    
    /**
     * 更新角色信息
     * @param role 角色信息
     * @return 更新后的角色
     */
    Role updateRole(Role role);
    
    /**
     * 删除角色
     * @param roleId 角色ID
     * @return 是否删除成功
     */
    boolean deleteRole(String roleId);
    
    /**
     * 获取角色列表
     * @param category 分类
     * @param isPublic 是否公开
     * @return 角色列表
     */
    Role[] getRoles(String category, Boolean isPublic);
}

